// 判断素数，构建素数表

#include <stdio.h>
#include <stdbool.h>

/*
判断素数
@param x 要判断的数字
@param knownPrimes 存储已知素数的数组
@param numberOfKnownPrimes 已存储的素数个数
@return ret 素数返回true，非素数返回false
*/
bool isPrime(int x, int knownPrimes[], int numberOfKnownPrimes);

int main(int argc, char const *argv[])
{
    const int number = 100;
    int prime[number];
    int count = 1;
    int i = 3;
    prime[0] = 2;
    while (count < number)
    {
        if (isPrime(i, prime, count))
        {
            prime[count++] = i;
        }
        i++;
    }
    for (i = 0; i < number; i++)
    {
        printf("%d\n", prime[i]);
        // 每5个为1组显示
        if ((i + 1) % 5) printf("\t");
        else printf("\n");
    }
    
    return 0;
}

// 好像只能按顺序求素数
bool isPrime(int x, int knownPrimes[], int numberOfKnownPrimes)
{
    int ret = 1;
    for (int i = 0; i < numberOfKnownPrimes; i++)
    {
        if (x % knownPrimes[i] == 0)
        {
            ret = 0;
            break;
        }
    }
    return ret;
}
